#include <iostream>

using namespace std;

//malloc free 库函数
//new delete    key work关键字 int for

//单变量空间
//尽量不强转
//数组

int* func()
{       
	int* a = new int(10);  // a在定义时，代表着指针变量的名称   // new int(10) 返回的是地址（开辟地址指定默认值且返回该内存地址）
	//该指针本质上是局部变量，放在栈上， 指针保存的数据是放在堆区。
    // new int(10) 是堆区创造的数据， int* p 是栈上的数据 p指向堆区相应的数据。 
    return a;              // a在其他时候，代表着 地址/指针
}// int* 为一个整体 代表着返回类型为 地址/指针

int main(int argc, char const *argv[])
{
	int *p = func();

	cout << *p << endl;
	cout << *p << endl;
	cout << *p << endl;
    cout << *p << endl;


	//利用delete释放堆区数据
	delete p;

	cout << *p << endl; //报错，释放的空间不可访问
    cout << *p << endl;


	return 0;
}

// 释放一个数组 要加一个[]才可以
// delete[] arr;